home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 7684 / 7684.xpi / chrome / firefm.jar / content / fmAlertOverlay.js < prev    next >
Text File  |  2009-06-02  |  4KB  |  107 lines

  1. /**
  2.  * Copyright (c) 2008, Jose Enrique Bolanos, Jorge Villalobos
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions are met:
  7.  *
  8.  *  * Redistributions of source code must retain the above copyright notice,
  9.  *    this list of conditions and the following disclaimer.
  10.  *  * Redistributions in binary form must reproduce the above copyright notice,
  11.  *    this list of conditions and the following disclaimer in the documentation
  12.  *    and/or other materials provided with the distribution.
  13.  *  * Neither the name of Jose Enrique Bolanos, Jorge Villalobos nor the names
  14.  *    of its contributors may be used to endorse or promote products derived
  15.  *    from this software without specific prior written permission.
  16.  *
  17.  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
  18.  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
  19.  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
  20.  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
  21.  * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  22.  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  23.  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
  24.  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
  25.  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
  26.  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
  27.  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  28.  **/
  29.  
  30. Components.utils.import("resource://firefm/fmCommon.js");
  31.  
  32. // Max width and height values for the Fire.fm album images
  33. const FIREFM_ALBUM_MAXWIDTH  = 64;
  34. const FIREFM_ALBUM_MAXHEIGHT = 64;
  35. // Regular expression used to determine if this is a Fire.fm notification
  36. const FIREFM_TITLE_REGEX = /fire\.fm/gi;
  37.  
  38. /**
  39.  * FireFM chrome namespace. We need a separate one because this one is defined
  40.  * per window.
  41.  */
  42. if (typeof(FireFMChrome) == 'undefined') {
  43.   var FireFMChrome = {};
  44. };
  45.  
  46. /**
  47.  * Alert overlay. Fixes a few UI issues with the Windows alert window.
  48.  */
  49. FireFMChrome.AlertOverlay = {
  50.   /* Logger for this object. */
  51.   _logger : null,
  52.  
  53.   /**
  54.    * Initializes the object.
  55.    */
  56.   onAlertLoad : function() {
  57.     this._logger = FireFM.getLogger("FireFMChrome.AlertOverlay");
  58.     this._logger.debug("onAlertLoad");
  59.  
  60.     let title = String(window.arguments[1]);
  61.     if (title.match(FIREFM_TITLE_REGEX)) {
  62.  
  63.       // Set album image style properties
  64.       let image = document.getElementById("alertImage");
  65.       image.setAttribute("maxwidth", FIREFM_ALBUM_MAXWIDTH);
  66.       image.setAttribute("maxheight", FIREFM_ALBUM_MAXHEIGHT);
  67.       image.style.maxWidth = FIREFM_ALBUM_MAXWIDTH + "px";
  68.       image.style.maxHeight = FIREFM_ALBUM_MAXHEIGHT + "px";
  69.       image.style.width = FIREFM_ALBUM_MAXWIDTH + "px";
  70.       image.style.height = FIREFM_ALBUM_MAXHEIGHT + "px";
  71.       image.style.margin = "4px";
  72.  
  73.       this._breakTextLabels();
  74.     }
  75.  
  76.     onAlertLoad();
  77.   },
  78.  
  79.   /**
  80.    * Finds line breaks (\n) in the alert text and creates a separate label for
  81.    * each of the text lines.
  82.    */
  83.   _breakTextLabels : function() {
  84.     this._logger.trace("_breakTextLabels");
  85.  
  86.     document.getElementById("alertTextLabel").hidden = true;
  87.  
  88.     try {
  89.       let labelsBox = document.getElementById("alertTextBox");
  90.       let labelString = window.arguments[2];
  91.       let clickable = window.arguments[3];
  92.       let labels = labelString.split("\n");
  93.  
  94.       for (var i = 0; i < labels.length; i++) {
  95.         let label = document.createElement("label");
  96.         label.setAttribute("value", labels[i]);
  97.         label.setAttribute("class", "alertText plain");
  98.         label.setAttribute("clickable", clickable);
  99.         label.setAttribute("onclick", "onAlertClick();");
  100.         labelsBox.appendChild(label);
  101.       }
  102.     } catch (e) {
  103.       this._logger.warn("_breakTextLabels failed: " + e);
  104.     }
  105.   }
  106. };
  107.